# -*- coding: utf-8 -*-
"""Valuecommerce API.ipynb

Automatically generated by Colaboratory.

Original file is located at
    https://colab.research.google.com/drive/1szKqrDVLCNswJe0tazoWG0pYryRdJqyV
"""

import requests
import base64
from datetime import datetime, timedelta
import calendar
from typing import Dict, List
from dateutil.relativedelta import relativedelta
from datetime import datetime, timedelta
import pytz
import json

#valuecommerce
asp_name="valuecommerce"
LOGIN_PAGE="https://aff.valuecommerce.ne.jp/"
ID="all-advertising@plus-company.jp"
PW="Hvu!dF-p7sYS"
PW="$FPua/)VQG93"
insert_asp=asp_name

# 各サイトの情報
sites = [
		{
		"name": "クレカ【PPC】",
        "client_key": "1152c43fd0d4c74dc1648f8407083df9cc1ad85d",
        "client_secret": "c3b7306ff751d2223cb1af35cae6375cc7725f36",
        "affiliate_id": "3688440"
        },{
		"name": "北海道ファンマガジン(PLUS)",
        "client_key": "a1fbce71515dc8297ba196f981e3380b6c8aaf2c",
        "client_secret": "5cf89825b21667c1ece2b65fbca759c0227ec16d",
        "affiliate_id":"3626128"
        },{
		"name": "TOWOO",
        "client_key": "662f093445145b38d6ae9ecb2d90505bac9827cc",
        "client_secret": "a9e4cf3349aeb39b562a4248ac12e7ee754dedfd",
        "affiliate_id":"3625650"
        },{
		"name": "マネープランニング",
        "client_key": "968b7753ca0f12ed651d4d90de599e74c18b1eb3",
        "client_secret": "3910d00b3cb37c2e95c279b76aef01d7a8618f5b",
        "affiliate_id":"3619904"
        },{
		"name": "re.cosme(Instagram)",
        "client_key": "5c74627b2cfa58b10937ada1c68cb8a3f44b4db6",
        "client_secret": "b20df97d5621159c155f9d9fadcbd5c7c4e359ea",
        "affiliate_id":"3604014"
        },{
		"name": "Movie Memo",
        "client_key": "161aa117f2321a7433958d32b93e4ec8721471a8",
        "client_secret": "5f19104222af9e18d1a10efbaa5048263736b5b8",
        "affiliate_id":"3459467"
        },{
		"name": "Re:cosme",
        "client_key": "9765a6dfd4c6cdd0e8c1f4c5c4a34a27ad9ce6d2",
        "client_secret": "90122db08194d1183e19067811a91fe22c49ec25",
        "affiliate_id": "3437502"
        },{
		"name": "比べて納得青汁倶楽部mamanclub.com",
        "client_key": "515f4417c347b5655ff07da24cae84b02a4e93af",
        "client_secret": "458ce7b29212009a0fd3c801c6fe110d852cf02a",
        "affiliate_id":"2720028"
        },{
		"name": "クレンジング口コミst2gappei.jp/",
        "client_key": "35c2b47f6d5a648dd27dce50062c92ad7ea254e8",
        "client_secret": "ecd3ce6e7793daa634393e4e0fd97230e4214a3c",
        "affiliate_id":"2717374"
        },{
		"name": "今人気のグルコサミンmediline.jp/",
        "client_key": "d7b76f50996fd7a70bde8d652964420481f4de30",
        "client_secret": "e34c3f2f7626aa36988c832b855899e6a8edd4a1",
        "affiliate_id":"2715979"
        },{
		"name": "大学偏差値JP",
        "client_key": "4dbf521f733c819cc33f3a8188d5e29bfa9cd926",
        "client_secret": "3974f8d44b37114c051aa736045345bad5e9bf52",
        "affiliate_id":"2710466"
        },{
		"name": "コラーゲン口コミ情報fm788.net",
        "client_key": "881111db38e5e1fcbc2bf0284f666af4c4e378a9",
        "client_secret": "4526f1cf05d61bde832d47a3c1e08b3d1feb410d",
        "affiliate_id":"2706206"
        },{
		"name": "ニキビケア特集!jssi18.org",
        "client_key": "72badb340c3a52e219c36715bf93bed3c6cdb42f",
        "client_secret": "7687cbcc70585e64fc53aa02bb52b70ab1e6705b",
        "affiliate_id":"2625533"
        },{
		"name": "黒酢が苦手な方も大丈夫!黒酢サプリの効能・効果",
        "client_key": "8f33db17d2ce4752e1c1eeed448b9ed88620dff7",
        "client_secret": "5cda0fbbaaf62f9dd1fae2e0f2c08228a2f607c0",
        "affiliate_id":"2601784"
        },{
		"name": "フェイシャルエステpure-esthe.net/",
        "client_key": "7596175ff5b1ac75bfe0338eab371ffc3f706414",
        "client_secret": "6d2b0bb0290910d1f9199f595005a23326cd53cd",
        "affiliate_id":"2596633"
        },{
		"name": "化粧水ランキングbeauty-fame.jp",
        "client_key": "fe1d48e6be80c6674f5de2d76fa0e451f8527169",
        "client_secret": "51fb2ee627d63c07c9e89c491b419f371ca46e6d",
        "affiliate_id":"2584425"
		}
]

# 前日の日付を取得
jst = pytz.timezone('Asia/Tokyo')
yesterday = (datetime.now(jst) - timedelta(days=1)).strftime('%Y-%m-%d')

# 現在の年と月を取得
now = datetime.now(jst)
current_year = now.year
current_month = now.month

# 今月の最初の日を取得
first_day_of_month = datetime(current_year, current_month, 1).strftime('%Y-%m-%d')

# 今月の最後の日を取得
last_day_of_month = datetime(current_year, current_month, calendar.monthrange(current_year, current_month)[1]).strftime('%Y-%m-%d')

# API endpoint
TOKEN_API = "https://api.valuecommerce.com/auth/v1/affiliate/token/"

def get_token(credentials):
    headers = {
        "Authorization": f"Bearer {credentials}",
        "Accept": "application/json"
    }
    params = {
        "grant_type": "client_credentials"
    }
    response = requests.get(TOKEN_API, headers=headers, params=params)
    if response.status_code == 200:
        token = response.json().get('resultSet', {}).get('rowData', {}).get('bearer_token')
        print(f"Successfully retrieved token: {token}")
        return token
    else:
        print(f"Failed to retrieve token. Status code: {response.status_code}")
        return None

# 各サイトのトークンを取得
for site in sites:
    credentials = base64.b64encode(f"{site['client_key']}|{site['client_secret']}".encode()).decode()
    site["token"] = get_token(credentials)

# API endpoint for transaction data
TRANSACTION_API = "https://api.valuecommerce.com/report/v2/affiliate/transaction/"

def get_transaction_data(site, from_date, to_date):
    headers = {
        "Authorization": f"Bearer {site['token']}",
        "Accept": "application/json"
    }
    params = {
        "from_date": from_date,
        "to_date": to_date,
    }
    response = requests.get(TRANSACTION_API, headers=headers, params=params)
    if response.status_code == 200:
        transaction_data = response.json().get('resultSet', {}).get('rowData', {})
        print(f"Successfully retrieved transaction data for site {site['name']}:")
        for transaction in transaction_data:
            print(json.dumps(transaction, indent=4))  # print each transaction in a readable format
        return transaction_data
    else:
        print(f"Failed to retrieve transaction data for site {site['name']}. Status code: {response.status_code}")
        return None

# Get transactions for yesterday
from_date = to_date = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d')

insert_reward = 0

# Get transaction data for each site
for site in sites:
    site_transactions = get_transaction_data(site, from_date, to_date)
    if site_transactions is not None:
        for transaction in site_transactions:
            insert_reward += transaction.get('affilPaymentNet', 0)  # adding up all the "affilPaymentNet" for all transactions

print(f"Total 'affilPaymentNet' for all sites: {insert_reward}")

from datetime import datetime, timedelta, timezone
#日付取得
JST = timezone(timedelta(hours=9), 'JST')
now = datetime.now(JST)
yesterday = now - timedelta(days=1)
logday = yesterday.strftime('%Y-%m-%d')
getday = now.strftime('%Y-%m-%d %H:%M:%S')
#報酬の日付取得
insert_date = logday
#ログの日付取得
insert_insert_date = getday
#アカウントの設定
insert_account = ID

#cURLで送信
headers = {'Content-Type': 'application/json','API-KEY': 'wZZhMHT9SZGr'}
url='https://plustest:plussp@plus-creative.xyz/nakata/asp_data/api/'
data = json.dumps({
    "api":"insert",
    "account": insert_account,
    "log_date": insert_date,
    "asp": insert_asp,
    "reward": insert_reward,
    "insert_date": insert_insert_date,
})
response = requests.post(url, headers=headers, data=data)
print(response.content)